home *** CD-ROM | disk | FTP | other *** search
- /*
- TCPPB.h
- C definitions of parameter block entries needed for TCP calls
-
- Copyright Apple Computer, Inc. 1988-91
- All rights reserved
-
- */
-
-
- /* Command codes */
-
- #define TCPCreate 30
- #define TCPPassiveOpen 31
- #define TCPActiveOpen 32
- #define TCPSend 34
- #define TCPNoCopyRcv 35
- #define TCPRcvBfrReturn 36
- #define TCPRcv 37
- #define TCPClose 38
- #define TCPAbort 39
- #define TCPStatus 40
- #define TCPExtendedStat 41
- #define TCPRelease 42
- #define TCPGlobalInfo 43
- #define TCPCtlMax 49
-
- typedef enum TCPEventCode {
- TCPClosing = 1,
- TCPULPTimeout,
- TCPTerminate,
- TCPDataArrival,
- TCPUrgent,
- TCPICMPReceived,
- lastEvent = 32767
- } TCPEventCode;
-
- typedef enum TCPTerminationReason {
- TCPRemoteAbort = 2,
- TCPNetworkFailure,
- TCPSecPrecMismatch,
- TCPULPTimeoutTerminate,
- TCPULPAbort,
- TCPULPClose,
- TCPServiceError,
- lastReason = 32767
- } TCPTerminationReason;
-
- typedef pascal void (*TCPNotifyProc) (
- StreamPtr tcpStream,
- unsigned short eventCode,
- Ptr userDataPtr,
- unsigned short terminReason,
- struct ICMPReport *icmpMsg);
-
- typedef void (*TCPIOCompletionProc) (struct TCPiopb *iopb);
-
- typedef unsigned short tcp_port;
-
- typedef unsigned char byte;
-
- enum { /* ValidityFlags */
- timeoutValue = 0x80,
- timeoutAction = 0x40,
- typeOfService = 0x20,
- precedence = 0x10
- };
-
- enum { /* TOSFlags */
- lowDelay = 0x01,
- throughPut = 0x02,
- reliability = 0x04
- };
-
- typedef struct TCPCreatePB {
- Ptr rcvBuff;
- unsigned long rcvBuffLen;
- TCPNotifyProc notifyProc;
- Ptr userDataPtr;
- }TCPCreatePB;
-
- typedef struct TCPOpenPB {
- byte ulpTimeoutValue;
- byte ulpTimeoutAction;
- byte validityFlags;
- byte commandTimeoutValue;
- ip_addr remoteHost;
- tcp_port remotePort;
- ip_addr localHost;
- tcp_port localPort;
- byte tosFlags;
- byte precedence;
- Boolean dontFrag;
- byte timeToLive;
- byte security;
- byte optionCnt;
- byte options[40];
- Ptr userDataPtr;
- }TCPOpenPB;
-
- typedef struct TCPSendPB {
- byte ulpTimeoutValue;
- byte ulpTimeoutAction;
- byte validityFlags;
- Boolean pushFlag;
- Boolean urgentFlag;
- Ptr wdsPtr;
- unsigned long sendFree;
- unsigned short sendLength;
- Ptr userDataPtr;
- }TCPSendPB;
-
-
- typedef struct TCPReceivePB { /* for receive and return rcv buff calls */
- byte commandTimeoutValue;
- byte filler;
- Boolean markFlag;
- Boolean urgentFlag;
- Ptr rcvBuff;
- unsigned short rcvBuffLen;
- Ptr rdsPtr;
- unsigned short rdsLength;
- unsigned short secondTimeStamp;
- Ptr userDataPtr;
- }TCPReceivePB;
-
- typedef struct TCPClosePB {
- byte ulpTimeoutValue;
- byte ulpTimeoutAction;
- byte validityFlags;
- Ptr userDataPtr;
- }TCPClosePB;
-
- typedef struct HistoBucket {
- unsigned short value;
- unsigned long counter;
- };
-
- #define NumOfHistoBuckets 7
-
- typedef struct TCPConnectionStats {
- unsigned long dataPktsRcvd;
- unsigned long dataPktsSent;
- unsigned long dataPktsResent;
- unsigned long bytesRcvd;
- unsigned long bytesRcvdDup;
- unsigned long bytesRcvdPastWindow;
- unsigned long bytesSent;
- unsigned long bytesResent;
- unsigned short numHistoBuckets;
- struct HistoBucket sentSizeHisto[NumOfHistoBuckets];
- unsigned short lastRTT;
- unsigned short tmrSRTT;
- unsigned short rttVariance;
- unsigned short tmrRTO;
- byte sendTries;
- byte sourchQuenchRcvd;
- }TCPConnectionStats;
-
- typedef struct TCPStatusPB {
- byte ulpTimeoutValue;
- byte ulpTimeoutAction;
- long unused;
- ip_addr remoteHost;
- tcp_port remotePort;
- ip_addr localHost;
- tcp_port localPort;
- byte tosFlags;
- byte precedence;
- byte connectionState;
- unsigned short sendWindow;
- unsigned short rcvWindow;
- unsigned short amtUnackedData;
- unsigned short amtUnreadData;
- Ptr securityLevelPtr;
- unsigned long sendUnacked;
- unsigned long sendNext;
- unsigned long congestionWindow;
- unsigned long rcvNext;
- unsigned long srtt;
- unsigned long lastRTT;
- unsigned long sendMaxSegSize;
- struct TCPConnectionStats *connStatPtr;
- Ptr userDataPtr;
- }TCPStatusPB;
-
- typedef struct TCPAbortPB {
- Ptr userDataPtr;
- }TCPAbortPB;
-
- typedef struct TCPParam {
- unsigned long tcpRtoA;
- unsigned long tcpRtoMin;
- unsigned long tcpRtoMax;
- unsigned long tcpMaxSegSize;
- unsigned long tcpMaxConn;
- unsigned long tcpMaxWindow;
- }TCPParam;
-
- typedef struct TCPStats {
- unsigned long tcpConnAttempts;
- unsigned long tcpConnOpened;
- unsigned long tcpConnAccepted;
- unsigned long tcpConnClosed;
- unsigned long tcpConnAborted;
- unsigned long tcpOctetsIn;
- unsigned long tcpOctetsOut;
- unsigned long tcpOctetsInDup;
- unsigned long tcpOctetsRetrans;
- unsigned long tcpInputPkts;
- unsigned long tcpOutputPkts;
- unsigned long tcpDupPkts;
- unsigned long tcpRetransPkts;
- }TCPStats;
-
- typedef struct TCPGlobalInfoPB {
- struct TCPParam *tcpParamPtr;
- struct TCPStats *tcpStatsPtr;
- #ifdef RUBBISH
- StreamPtr *tcpCDBTable[];
- #else
- StreamPtr *tcpCDBTable;
- #endif
- Ptr userDataPtr;
- unsigned short maxTCPConnections;
- }TCPGlobalInfoPB;
-
- typedef struct TCPiopb {
- char fill12[12];
- TCPIOCompletionProc ioCompletion;
- short ioResult;
- char *ioNamePtr;
- short ioVRefNum;
- short ioCRefNum;
- short csCode;
- StreamPtr tcpStream;
- union {
- struct TCPCreatePB create;
- struct TCPOpenPB open;
- struct TCPSendPB send;
- struct TCPReceivePB receive;
- struct TCPClosePB close;
- struct TCPAbortPB abort;
- struct TCPStatusPB status;
- struct TCPGlobalInfoPB globalInfo;
- } csParam;
- }TCPiopb;
-
-